﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Elysium.Demo;
using SIIE_ERP.Codigo;
using SIIE_ERP.View;

namespace Elysium.Demo.Inventarios.Catalogos
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class Kit_Alta : UserControl, IPropiedadesNavegacion
    {

        ////////////////////////////////////////////////////////////////////////////
        //  PROPIEDADES DE NAVEGACION
        public string Texto { get { return _texto; } }
        public TabControl TabControlPadre { get { return _tabControlPadre; } }
        public TabItem TabItemPadre { get { return _tabItemPadre; } }

        private string _texto;
        private TabControl _tabControlPadre;
        private TabItem _tabItemPadre;

        public void setParametros(string Texto, ref TabControl tabControl, ref TabItem tabItem)
        {
            this._texto = Texto; this._tabControlPadre = tabControl; this._tabItemPadre = tabItem;
        }

        private void ButtonRegresar_Click(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }
        // FIN DE PROPIEDADES DE NAVEGACION
        ///////////////////////////////////////////////////////////////////////////

        private UsuarioActivo _sesion;

        public Kit_Alta(UsuarioActivo usuario)
        {
            InitializeComponent();
            this._sesion = usuario;
            CargaCatalogos();
        }

        private void CargaCatalogos()
        {
            ComboBoxUI.ComboMonedas(ComboMoneda, _sesion);
            ComboBoxUI.ComboGrupoProductos(ComboGrupoProducto, _sesion);
            ComboBoxUI.ComboTasasImpuestos(ComboTasaImpuesto, _sesion);
            ComboBoxUI.ComboUnidadMedida(ComboUnidadMedida, _sesion);
        }

        private void ComboTasaImpuesto_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CampoPrecioListaSinImpuesto.Text = SIIE_ERP.Codigo.Inventarios.Impuestos.CalculaImpuestos(CampoPrecioListaConImpuesto.Text,
                                                                                                 ComboTasaImpuesto.SelectedValue.ToString(),
                                                                                                 _sesion);
            CampoPrecioMinimoSinImpuesto.Text = SIIE_ERP.Codigo.Inventarios.Impuestos.CalculaImpuestos(CampoPrecioMinimoConImpuesto.Text,
                                                                                                 ComboTasaImpuesto.SelectedValue.ToString(),
                                                                                                 _sesion);
        }

        private void LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            CampoPrecioListaSinImpuesto.Text = SIIE_ERP.Codigo.Inventarios.Impuestos.CalculaImpuestos(CampoPrecioListaConImpuesto.Text,
                                                                                                 ComboTasaImpuesto.SelectedValue.ToString(),
                                                                                                 _sesion);
            CampoPrecioMinimoSinImpuesto.Text = SIIE_ERP.Codigo.Inventarios.Impuestos.CalculaImpuestos(CampoPrecioMinimoConImpuesto.Text,
                                                                                                 ComboTasaImpuesto.SelectedValue.ToString(),
                                                                                                 _sesion);
        }

        private void Button_Guardar_Click(object sender, RoutedEventArgs e)
        {
            if (!Valida()) return;

            var Clave = CampoClave.Text;
            var Nombre = CampoNombre.Text;
            var NombreCorto = CampoNombreCorto.Text;
            var Descripcion = CampoDescripcionExtendida.Text;
            var Marca = CampoMarca.Text;
            var Unidad = Int32.Parse(ComboUnidadMedida.SelectedValue.ToString());
            var CodigoBarras = CampoCodigoBarras.Text;
            var Grupo = Int32.Parse(ComboGrupoProducto.SelectedValue.ToString());
            var Subgrupo = Int32.Parse(ComboSubgrupoProducto.SelectedValue.ToString());
            var Disponible = (bool)CheckDisponibleVenta.IsChecked;
            var Descontinuado = (bool)CheckDescontinuado.IsChecked;
            var Moneda = Int32.Parse(ComboMoneda.SelectedValue.ToString());
            var Tasa = Int32.Parse(ComboTasaImpuesto.SelectedValue.ToString());
            var PrecioLista = Double.Parse(CampoPrecioListaConImpuesto.Text);
            var PrecioMinimo = Double.Parse(CampoPrecioMinimoConImpuesto.Text);

            var IdKit = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_TipoArticulo().Get_Id_Kit();

            var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Articulo(_sesion.RFC, _sesion.UserName);

            if (db.Insert_Articulo(Clave, Nombre, NombreCorto, Descripcion, CodigoBarras, Marca, Int32.Parse(IdKit), Grupo, Subgrupo,
                                  1, 1, 1, Unidad, Disponible, Descontinuado, Moneda, PrecioLista, PrecioMinimo, Tasa, 1, 1, 1, 
                                  0, 0,0,0).Id == 1)
            {
                MessageBox.Show("Kit agregado correctamente.");
                _tabControlPadre.Items.Remove(_tabItemPadre);
            }
            else
            {
                MessageBox.Show("Error al agregar el kit.");
            }
        }

        private bool Valida()
        {
            try { Int32.Parse(ComboUnidadMedida.SelectedValue.ToString()); }
            catch (Exception)
            {
                MessageBox.Show("Debe seleccionar una unidad de medida."); return false;
            }
            try { Int32.Parse(ComboGrupoProducto.SelectedValue.ToString()); }
            catch (Exception)
            {
                MessageBox.Show("Debe seleccionar un grupo de producto."); return false;
            }
            try { Int32.Parse(ComboSubgrupoProducto.SelectedValue.ToString()); }
            catch (Exception)
            {
                MessageBox.Show("Debe seleccionar un subgrupo de producto."); return false;
            }
            try { Int32.Parse(ComboMoneda.SelectedValue.ToString()); }
            catch (Exception)
            {
                MessageBox.Show("Debe seleccionar una moneda."); return false;
            }
            try { Int32.Parse(ComboTasaImpuesto.SelectedValue.ToString()); }
            catch (Exception)
            {
                MessageBox.Show("Debe seleccionar una tasa de impuesto."); return false;
            }
            try { Double.Parse(CampoPrecioListaConImpuesto.Text); }
            catch (Exception)
            {
                MessageBox.Show("El Precio de lista con impuesto debe ser un numero."); return false;
            }
            try { Double.Parse(CampoPrecioMinimoConImpuesto.Text); }
            catch (Exception)
            {
                MessageBox.Show("El precio minimo con impuesto debe ser un numero."); return false;
            }
            return true;
        }

        private void ComboGrupoProducto_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var nuevo = (e.AddedItems[0] as CItem).Id;
            try
            {
                ComboBoxUI.ComboSubGrupoProductos(ref ComboSubgrupoProducto, _sesion, Int32.Parse(nuevo));
            }
            catch (Exception) { }

        }

        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("Kit_Articulos.htm", "Ayuda");
            Ayuda.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Ayuda.ShowDialog();
        }        
    }
}
